草庐IT

C++ STL : Passing an empty container to lower_bound

全部标签

c++ - 找到 g++ 使用的 STL header 的路径

我需要在std::vector的调试版本中查找一些东西,我不记得header的实际位置。这是在Windows上的MSYS下,这很棘手,因为你有/include,/mingw/include,/mingw/mingw32/include,/usr/include,我仍然找不到它们...我知道一种方法,就是这样写一个文件:#includeintmain(){return0;}然后$g++-Etemp.cpp|grepvector我们发现它在这里:/mingw/lib/gcc/mingw32/4.8.1/include/c++/vector但是有没有更快的方法呢?可以问一下吗g++不用这个技

c++ - 如何基于作为 STL 容器的模板参数模拟选定成员函数的部分特化?

我正在使用一个使用STL容器作为模板参数的类。不过,并非所有容器都提供相同的方法,因此我试图找出如何根据所使用的容器专门化特定方法。例子:templateclassA{private:containerm_container;public:voidfoo();//doessomethingcontainerspecific//moregenericmethodsthatworkwithanycontainer};下面的代码不会编译说“无法匹配方法特化”,但这大约是我想要实现的:templatetemplatevoidA>::foo(){//vectorspecificimplement

c++ - 在 C++ 中以递归方式简单地打印 vector 的 STL vector

我使用了以下代码,它可以很好地打印带有printContainer()的简单std::vector。我现在想使用printContainerV2()为嵌套容器扩展它我曾尝试使用模板来确定类型是否为STL容器,但它似乎不是执行此操作的方法。#include#include#includetemplateboolisLast(Iteriter,constCont&cont){return(iter!=cont.end())&&(next(iter)==cont.end());}templatestructis_cont{staticconstboolvalue=false;};templa

c++ - 合并多个 STL 容器并删除重复元素的最佳方法?

我有两个要合并的STL容器,删除出现不止一次的所有元素。例如:typedefstd::listcontainer;containerc1;containerc2;c1.push_back(1);c1.push_back(2);c1.push_back(3);c2.push_back(2);c2.push_back(3);c2.push_back(4);containerc3=unique_merge(c1,c2);//c3nowcontainsthefollowing4elements://1,2,3,4std::unique似乎只适用于相邻元素,在我的例子中,容器可以按任何顺序排列。

c++ - 我应该在插入 STL 集之前随机洗牌吗?

我需要将1000万个字符串插入C++STL集中。字符串已排序。如果按排序顺序插入字符串,会不会出现病态问题?我应该先随机化吗?还是G++STL实现会自动为我重新平衡? 最佳答案 set实现通常使用红黑树,它会为您重新平衡。但是,如果您在插入之前随机化数据,插入可能会更快(也可能不会)——唯一可以确定的方法是对您的设置实现和特定数据进行测试。无论哪种方式,检索时间都是相同的。 关于c++-我应该在插入STL集之前随机洗牌吗?,我们在StackOverflow上找到一个类似的问题:

c++ - STL的copy函数的效率

我正在尝试从条目列表构建一组唯一的单词,每个条目都有一个字符串vector。所以我创建了一个名为Insert的函数,它会像这样为每个条目调用:for(auto&e:_Entries)_Dictionary.Insert(begin(e.getNameWords()),end(e.getNameWords()));_Dictionary类内部有一个集合(STL容器),我写了Insert函数如下:templatevoidInsert(InputIteratorfirst,InputIteratorlast){for(autoit=first;it!=last;++it)_AllWords.

c++ - STL容器中的value_type有什么用?

value_type在STL容器中有什么用?来自MSDN://vector_value_type.cpp//compilewith:/EHsc#include#includeintmain(){usingnamespacestd;vector::value_typeAnInt;AnInt=44;cout我不明白value_type在这里实现了什么?变量也可以是int吗?使用它是因为编码人员懒于检查vector中存在的对象类型吗?我觉得这些也跟它差不多allocator_type,size_type,difference_type,reference,key_type等..

c++ - 一种从 .STL(立体光刻)文件计算质心的方法?

我正在尝试计算STL文件中定义的对象的质心(x,y,z)坐标(立体光刻,不要与标准模板库混淆)。STL文件包含由三角形组成的边界定义的封闭对象(或多个对象)。三角形本身不一定按任何顺序排列,文件只是在3D空间中漂浮的每个三角形的坐标3个顶点加上三角形的法vector(应忽略法vector,因为它并不总是正确完成)。没有任何东西将每个三角形相互联系起来,假设对象是封闭的。一种简单的方法是将一个体积(在本例中为一个盒子)分成数百万个元素,并确定每个元素是否在STL文件中定义的对象内部,然后求和这些矩并计算中心质量。这会起作用,但它远非优雅且极其缓慢。另一种方法是将边界表示转换为许多堆积的四

c++ - STL 可迭代对象的迭代器循环宏

概念因此,我试图定义一个宏来简化以下代码:for(vector::iteratoriter=iterable.begin();iter!=iterable.end();iter++)和for(map::iteratoriter=iterable.begin();iter!=iterable.end();iter++)等等现有工作到目前为止,我有#defineevery(iter,iterable)::iteratoriter=iterable.begin();iter!=iterable.end();iter++for(vectorevery(iter,iterable))但我想进一步

C++ STL - STL sort() 的第三个参数如何工作?

我想对classPerson的对象数组进行排序基于其数据成员'age'.我将对象存储在vectorv中.据我所知,至少有4种方法可以执行此操作,根据下面编写的方法,我有以下问题。如何operator()在类工作中定义?我不应该在这里重载'我在方法1中发送了一个对象作为第三个参数。但是,在方法2中,我发送了一个函数的名称。为什么会这样?四种方法中哪种最好?我觉得方法三最简单。方法一classcmp{public:booloperator()(Personconst&a,Personconst&b){returna.age方法二boolcmp(constPersona,constPerso